import { AnyAction } from 'redux'
import * as TYPES from '../action-types'
import Slider from '@/typings/slider'
import Lesson from '@/typings/Lesson'

export interface Lessons {
  loading: boolean
  list: Lesson[]
  hasMore: boolean
  offset: number
  limit: number
}
export interface HomeState {
  currentCategory: string
  sliders: Slider[]
  lessons: Lessons
}
let initialState: HomeState = {
  currentCategory: 'all', //默认当前的分类是显示全部类型的课程
  sliders: [],
  lessons: {
    loading: false,
    list: [],
    hasMore: true,
    offset: 0,
    limit: 5
  }
}
export default function (
  state: HomeState = initialState,
  action: AnyAction
): HomeState {
  switch (action.type) {
    case TYPES.SET_CURRENT_CATEGORY: //修改当前分类
      return { ...state, currentCategory: action.payload }
    case TYPES.GET_SLIDERS:
      return { ...state, sliders: action.payload.data }
    case TYPES.SET_LESSONS_LOADING:
      state.lessons.loading = action.payload
      return state
    case TYPES.SET_LESSONS:
      state.lessons.loading = false
      state.lessons.hasMore = action.payload.hasMore
      state.lessons.list = [...state.lessons.list, ...action.payload.list]
      state.lessons.offset = state.lessons.offset + action.payload.list.length
      return state
    case TYPES.REFRESH_LESSONS:
      state.lessons.hasMore = action.payload.hasMore
      state.lessons.list = action.payload.list
      state.lessons.offset = action.payload.list.length
      return state
    default:
      return state
  }
}
